osdevfandomcom_ru-20200214-history
2. Введение
This document provides an overview of the ARMv8 instruction sets. Most of the document forms a description of the new A64 instruction set used when the processor is operating in AArch64 register width state, and defines its preferred architectural assembly language. Section 6 below lists the extensions introduced by ARMv8 to the A32 and T32 instruction sets – known in ARMv7 as the ARM and Thumb instruction sets respectively – which are available when the processor is operating in AArch32 register width state. The A32 and T32 assembly language syntax is unchanged from ARMv7. ---- Данный документ содержит обзор набора инструкций ARMv8. Большая его часть посвящена новому набору инструкций A64, используемому в режиме длинны регистров AArch64, а также описывает предпочтительный архитектурный язык ассемблера. Глава 6 описывает расширения ARMv8 добавленные в наборы инструкции A32 и T32, известные ранее как ARM и Thumb в архитектуре ARMv7. A32 и T32 используются процессором, находящимся в режиме длинны регистров AArch32. Синтаксис языка ассемблера для этих двух режимов не изменен по сравнению с ARMv7. ---- In the syntax descriptions below the following conventions are used: UPPER UPPER-CASE text is fixed, while lower-case text is variable. So register name Xn indicates that the `X’ is required, followed by a variable register number, e.g. X29. <> Any item bracketed by < and > is a short description of a type of value to be supplied by the user in that position. A longer description of the item is normally supplied by subsequent text. ---- Соглашения, применяемые в описаниях синтаксиса: ТЕКСТ В ВЕРХНЕМ РЕГИСТРЕ - неизменная часть, в сочетании с буквами в нижнем регистре, которые могут изменятся, образуют следующие конструкции: Xn - где `X’ - постоянна, а n''' - варьируется, т.е. одно из допустимых значений - X29. '''<> - текст, обрамленный знаками "больше" и "меньше" (так называемыми угловыми скобками) - это короткое объявление типа для значения, которое следует использовать в этом месте. Далее по тексту следует более подробное описание. ---- {} - Any item bracketed by curly braces { and } is optional. A description of the item and of how its presence or absence affects the instruction is normally supplied by subsequent text. In some cases curly braces are actual symbols in the syntax, for example surrounding a register list, and such cases will be called out in the surrounding text. [] - A list of alternative characters may be bracketed by [ and ]. A single one of the characters can be used in that position and the the subsequent text will describe the meaning of the alternatives. In some cases the symbols [ and ] are part of the syntax itself, such as addressing modes and vector elements, and such cases will be called out in the surrounding text. {}- элемент в фигурных скобках опционален, т.е. может присутствовать или отсутствовать. Решение объясняется далее по тексту вместе, в подробном описании. В некоторых случаях, фигурные скобки - часть синтаксиса, например, могут обрамлять список регистров, и иметь соответствующее значение, зависящее от синтаксиса. []- в квадратных скобках перечисляются варианты, один из которых можно выбрать в данном случае. Решение объясняется далее по тексту, в подробном описании. В некоторых случаях, квадратные скобки - часть синтаксиса, например, в режимах адресации или элементах векторов, и иметют соответствующее значение, зависящее от синтаксиса. ---- a|b Alternative words are separated by a vertical bar | and may be surrounded by parentheses to delimit them, e.g. U(ADD|SUB)W represents UADDW or USUBW. +/- This indicates an optional + or - sign. If neither is coded, then + is assumed. ---- a|b - доступные варианты слов разделяются вертикальной чертой и могут быть обрамлены круглыми скобками для выделения, т.е. U(ADD|SUB)W дают в итоге UADDW или USUBW. '+/-' - показывает, что можно использовать знак "плюс" или "минус". По умолчанию применяется "плюс".